#include "uthread_struct.h"
#include "lista.h"
#include "uthread.h"
#include <stdio.h>

/* FunÃ§Ãµes de teste */
void foo1(void *arg){
    printf("Executando foo1, e terminando:");

}

void foo2(void *arg){
    printf("Foo2 chamada, com o parametro %d\n", arg);
    uth_yield();
}


/* Realizaremos qualquer tipo de teste aqui! */
int main(){

    unsigned int i = 2, j = 555;

    uth_init();
    printf("Biblioteca inicializada!\n");

    uth_create(foo2, &i);
    printf("Thread 1 criada!\n");

    uth_create(foo2, &j);
    printf("Thread 2 criada!\n");

    uth_create(foo1, &i);
    printf("Thread 3 criada!\n");

    uth_yield();

    uth_wait(3);
    //inicEstruturaThreads();
    //listaThreads *l1 = NULL;
    //tcb *tcb1, *tcb2, *tcb3, *tcb4;

    //tcb1 = alocarThread();  tcb2 = alocarThread();  tcb3 = alocarThread();  tcb4 = alocarThread();
    //l1 = inserir(l1, tcb1);  l1 = inserir(l1, tcb2);  l1 = inserir(l1, tcb3);  l1 = inserir(l1, tcb4);

    //imprimeThread(buscarPrimeiroElemento(l1)); //imprime o primeiro da fila
    //imprimeThread(buscarPrimeiroElemento(l1->proximo)); // segundo da fila
    //imprimeThread(buscarPrimeiroElemento(l1->proximo->proximo)); // terceiro da fila

    //imprimeThread(buscaElementoX(l1,3));


	return 0;
}
